home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / stngpasm / pure_c / include / uran / uran_gem.sh < prev    next >
Encoding:
Text File  |  1997-08-08  |  20.8 KB  |  958 lines

  1. ;----------------------------------------------------------------------------
  2. ;File name:    URAn_GEM.SH            Revision date:    1997.08.09
  3. ;Creator:    Ulf Ronald Andersson        Creation date:    1991.02.02
  4. ;(c)1992 by:    Ulf Ronald Andersson        All rights reserved
  5. ;Released as:    FREEWARE            (commercial sales forbidden)
  6. ;----------------------------------------------------------------------------
  7. ;Purpose:    Symbol & Macro library for GEM operations
  8. ;----------------------------------------------------------------------------
  9. ;Required header declarations:
  10. ;
  11. ;    include    "uran\STRUCT.SH"
  12. ;    include    "uran\URAn_SYS.SH"
  13. ;    include    "uran\URAn_GEM.SH"
  14. ;
  15. ;----------------------------------------------------------------------------
  16. ;    Library macros:
  17. ;
  18. ;gem_aes    func,arg,arg,arg...
  19. ;sub_aes    func
  20. ;sub_vdi    func[,handle]
  21. ;
  22. ;vq_aes        => 0 if aes is missing
  23. ;vq_gdos    => 0 if gdos is missing
  24. ;vq_vgdos    => -2 if gdos is missing, otherwise => version code
  25. ;aes_redraw    redraws entire AES screen, including menu line
  26. ;
  27. ;NB:    Use "make GEM_links" to include all referred code modules.
  28. ;
  29. ;NB:    The VDI arrays 'contrl', 'intin', 'ptsin', 'intout', and 'ptsout'
  30. ;    are not created in this lib, but must be defined elsewhere.
  31. ;NB:    The arrays 'contrl', 'intin', 'intout' are also used for AES calls.
  32. ;
  33. ;NB:    The AES arrays 'global', 'addrin', 'addrout' are created in the lib.
  34. ;----------------------------------------------------------------------------
  35. ;    VDI FUNCTION DEFINITIONS
  36. ;
  37. v_opnwk        equ    $000B7f01
  38. v_clswk        equ    $00007f02
  39. v_clrwk        equ    $00007f03
  40. v_updwk        equ    $00007f04
  41. ;Op $05 has subop's given further below
  42. v_pline        equ    $ff007f06
  43. v_pmarker    equ    $ff007f07
  44. v_gtext        equ    $01ff7f08
  45. v_fillarea    equ    $ff007f09
  46. v_cellarray    equ    $02ff7f0a
  47. ;Op $0b has subop's given further below
  48. vst_height    equ    $01007f0c
  49. vst_rotation    equ    $00017f0d
  50. vs_color    equ    $00047f0e
  51. vsl_type    equ    $00017f0f
  52. vsl_width    equ    $01007f10
  53. vsl_color    equ    $00017f11
  54. vsm_type    equ    $00017f12
  55. vsm_height    equ    $01007f13
  56. vsm_color    equ    $00017f14
  57. vst_font    equ    $00017f15
  58. vst_color    equ    $00017f16
  59. vsf_interior    equ    $00017f17
  60. vsf_style    equ    $00017f18
  61. vsf_color    equ    $00017f19
  62. vq_color    equ    $00027f1a
  63. ;$1b
  64. vrq_locator    equ    $01007f1c
  65. vsm_locator    equ    vrq_locator
  66. vrq_valuator    equ    $00017f1d
  67. vsm_valuator    equ    vrq_valuator
  68. vrq_choice    equ    $00017f1e
  69. vsm_choice    equ    vrq_choice
  70. vrq_string    equ    $01027f1f
  71. vsm_string    equ    vrq_string
  72. vswr_mode    equ    $00017f20
  73. vsin_mode    equ    $00027f21
  74. ;$22
  75. vql_attributes    equ    $00007f23
  76. vqm_attributes    equ    $00007f24
  77. vqf_attributes    equ    $00007f25
  78. vqt_attributes    equ    $00007f26
  79. vst_alignment    equ    $00027f27
  80. v_opnvwk    equ    $000b7f64
  81. v_clsvwk    equ    $00007f65
  82. vq_extnd    equ    $00017f66
  83. v_contour    equ    $01017f67
  84. v_contourfill    equ    v_contour
  85. vsf_perimeter    equ    $00017f68
  86. v_get_pixel    equ    $01007f69
  87. vst_effects    equ    $00017f6a
  88. vst_point    equ    $00017f6b
  89. vsl_ends    equ    $00027f6c
  90. vro_cpyfm    equ    $04017f6d
  91. vr_trnfm    equ    $00007f6e
  92. vsc_form    equ    $00257f6f
  93. vsf_udpat    equ    $00ff7f70
  94. vsl_udsty    equ    $00017f71
  95. vr_recfl    equ    $02007f72
  96. vqin_mode    equ    $00017f73
  97. vqt_extent    equ    $00ff7f74
  98. vqt_width    equ    $00017f75
  99. vex_timv    equ    $00007f76
  100. vex_time    equ    vex_timv
  101. vst_load_fonts    equ    $00017f77
  102. vst_unload_fonts    equ    $00017f78
  103. vrt_cpyfm    equ    $04037f79
  104. v_show_c    equ    $00017f7a
  105. v_hide_c    equ    $00007f7b
  106. vq_mouse    equ    $00007f7c
  107. vex_butv    equ    $00007f7d
  108. vex_motv    equ    $00007f7e
  109. vex_curv    equ    $00007f7f
  110. vq_key_s    equ    $00007f80
  111. vs_clip        equ    $02017f81
  112. ;;;vqt_name    equ    $xxxx7f82
  113. ;;;vqt_fontinfo    equ    $xxxx7f83
  114. ;
  115. v_ftext        equ    $01ff7ff1    ;\/ NVDI >=3.0, NB: ptsin size decides
  116. v_ftext_offset    equ    $ffff7ff1    ;/\ which function is used
  117. ;
  118. ;
  119. ;----------------------------------------------------------------------------
  120. ;    VDI subfunction definitions
  121. ;
  122. vq_chcells    equ    $00000105
  123. v_exit_cur    equ    $00000205
  124. v_enter_cur    equ    $00000305
  125. v_curup        equ    $00000405
  126. v_curdown    equ    $00000505
  127. v_curright    equ    $00000605
  128. v_curleft    equ    $00000705
  129. v_curhome    equ    $00000805
  130. v_eeos        equ    $00000905    ;\/ NB: info varies as to the
  131. v_eeol        equ    $00000a05    ;/\ order of these 2 functions
  132. vs_curaddress    equ    $00020b05
  133. v_curtext    equ    $00ff0c05
  134. v_rvon        equ    $00000d05
  135. v_rvoff        equ    $00000e05
  136. vq_curaddress    equ    $00000f05
  137. vq_tabstatus    equ    $00001005
  138. v_hardcopy    equ    $00001105
  139. v_dspcur    equ    $01001205
  140. v_rmcur        equ    $00001305
  141. v_form_adv    equ    $00001405
  142. v_output_window    equ    $02001505
  143. v_clear_disp_list=$00001605
  144. ;;;v_bit_image    equ    $xxxx1705
  145. ;
  146. vs_palette    equ    $00013c05    ;\
  147. v_sound        equ    $00023d05    ; > NB: PC-specific
  148. vs_mute        equ    $00013e05    ;/
  149. ;
  150. vs_calibrate    equ    $00ff4c05
  151. vq_calibrate    equ    $00004d05
  152. ;
  153. vt_resolution    equ    $01005105
  154. vt_axis        equ    $01005205
  155. vt_origin    equ    $01005305
  156. vq_tdimensions    equ    $00005405
  157. vt_alignment    equ    $01005505
  158. ;
  159. vqp_films    equ    $00005b05    ;\
  160. vqp_state    equ    $00005c05    ; \
  161. vsp_state    equ    $00155d05    ;  \/ NB: info questionable
  162. vsp_save    equ    $00005e05    ;  /\
  163. vsp_message    equ    $00009500    ; /
  164. vqp_error    equ    $00006005    ;/
  165. ;
  166. v_meta_extents    equ    $02006205
  167. v_write_meta    equ    $ffff6305
  168. vm_filename    equ    $00ff6405
  169. ;
  170. v_offset    equ    $00016505
  171. v_fontinit    equ    $00026605    ;fonthead at (intin[0]<<16)|intin[1]
  172. ;
  173. v_bar        equ    $0200010b
  174. v_arc        equ    $0402020b
  175. v_pieslice    equ    $0402030b
  176. v_circle    equ    $0300040b
  177. v_ellipse    equ    $0200050b
  178. v_ellarc    equ    $0202060b
  179. v_ellpie    equ    $0202070b
  180. v_rbox        equ    $0200080b
  181. v_rfbox        equ    $0200090b
  182. v_justified    equ    $02ff0a0b
  183. ;
  184. v_bez        equ    $ffff0d06    ;NVDI >equ    2.10
  185. v_bez_fill    equ    $ffff0d09    ;NVDI >equ    2.10
  186. ;
  187. ;
  188. ;----------------------------------------------------------------------------
  189. ;    AES FUNCTION DEFINITIONS
  190. ;
  191. appl_init    equ    $01000a
  192. appl_read    equ    $21100b
  193. appl_write    equ    $21100c
  194. appl_find    equ    $01100d
  195. appl_tplay    equ    $21100e
  196. appl_trecord    equ    $11100f
  197. appl_bvset    equ    $210010    ;new
  198. appl_yield    equ    $010011    ;new
  199. appl_search    equ    $131012    ;new
  200. appl_exit    equ    $010013
  201. ;
  202. evnt_keybd    equ    $010014
  203. evnt_button    equ    $350015
  204. evnt_mouse    equ    $550016
  205. evnt_mesag    equ    $011017
  206. evnt_timer    equ    $210018
  207. evnt_multi    equ    $1071019
  208. evnt_dclick    equ    $21001a
  209. ;
  210. menu_bar    equ    $11101e
  211. menu_icheck    equ    $21101f
  212. menu_ienable    equ    $211020
  213. menu_tnormal    equ    $211021
  214. menu_text    equ    $112022
  215. menu_register    equ    $111023
  216. menu_unregister    equ    $110024    ;new
  217. menu_click    equ    $210025    ;new
  218. ;
  219. objc_add    equ    $211028
  220. objc_delete    equ    $111029
  221. objc_draw    equ    $61102a
  222. objc_find    equ    $41102b
  223. objc_offset    equ    $13102c
  224. objc_order    equ    $21102d
  225. objc_edit    equ    $42102e
  226. objc_change    equ    $81102f
  227. objc_sysvar    equ    $430030    ;3-D MTOS/MagiC
  228. ;
  229. form_do        equ    $111032
  230. form_xdo    equ    $222032
  231. form_dial    equ    $910033
  232. form_xdial    equ    $a10033
  233. form_alert    equ    $111034
  234. form_error    equ    $110035
  235. form_center    equ    $051036
  236. form_keybd    equ    $331037
  237. form_button    equ    $221038
  238. ;
  239. graf_rubberbox    equ    $430046
  240. graf_rubbox    equ    $430046
  241. graf_dragbox    equ    $830047
  242. graf_movebox    equ    $610048
  243. graf_mbox    equ    $610048
  244. graf_growbox    equ    $810049
  245. graf_shrinkbox    equ    $81004a
  246. graf_watchbox    equ    $41104b
  247. graf_slidebox    equ    $31104c
  248. graf_handle    equ    $05004d
  249. graf_mouse    equ    $11104e
  250. graf_mkstate    equ    $05004f
  251. ;
  252. scrp_read    equ    $011050
  253. scrp_write    equ    $011051
  254. scrp_clear    equ    $010052    ;new
  255. ;
  256. fsel_input    equ    $02205a
  257. fsel_exinput    equ    $02305b    ;new
  258. ;
  259. wind_create    equ    $510064
  260. wind_open    equ    $510065
  261. wind_close    equ    $110066
  262. wind_delete    equ    $110067
  263. wind_get    equ    $250068
  264. wind_set    equ    $610069
  265. wind_find    equ    $21006a
  266. wind_update    equ    $11006b
  267. wind_calc    equ    $65006c
  268. wind_new    equ    $00006d
  269. ;
  270. rsrc_load    equ    $01106e
  271. rsrc_free    equ    $01006f
  272. rsrc_gaddr    equ    $210170
  273. rsrc_saddr    equ    $211071
  274. rsrc_obfix    equ    $111072
  275. rsrc_rcfix    equ    $011073    ;MTOS/MagiC
  276. ;
  277. shel_read    equ    $012078
  278. shel_write    equ    $312079
  279. shel_get    equ    $11107a
  280. shel_put    equ    $11107b
  281. shel_find    equ    $01107c
  282. shel_envrn    equ    $01207d
  283. shel_rdef    equ    $01207e    ;new
  284. shel_wdef    equ    $00207f    ;new
  285. ;
  286. appl_getinfo    equ    $150082
  287. ;
  288. xgrf_stepcalc    equ    $660082    ;PC/MagiC  NB: opcode equ    appl_getinfo
  289. xgrf_2box    equ    $910083    ;PC/MagiC
  290. ;
  291. form_popup    equ    $211087
  292. form_xerr    equ    $211088    ;MagiC >equ    2.0
  293. ;
  294. ;
  295. ;----------------------------------------------------------------------------
  296. ;    AES DATA DEFINITIONS
  297. ;
  298. ; Function flags for evnt_multi
  299. ;
  300. MU_KEYBD    equ    $01
  301. MU_BUTTON    equ    $02
  302. MU_M1        equ    $04
  303. MU_M2        equ    $08
  304. MU_MESAG    equ    $10
  305. MU_TIMER    equ    $20
  306. ;
  307. ;
  308. ; Function flag bits for evnt_multi
  309. ;
  310. b_MU_KEYBD    equ    0
  311. b_MU_BUTTON    equ    1
  312. b_MU_M1        equ    2
  313. b_MU_M2        equ    3
  314. b_MU_MESAG    equ    4
  315. b_MU_TIMER    equ    5
  316. ;
  317. ;----------------------------------------------------------------------------
  318. ;    Message event codes
  319. ;
  320. MN_SELECTED    equ    $10
  321. ;
  322. WM_REDRAW    equ    $14
  323. WM_TOPPED    equ    $15
  324. WM_CLOSED    equ    $16
  325. WM_FULLED    equ    $17
  326. WM_ARROWED    equ    $18
  327. WM_HSLID    equ    $19
  328. WM_VSLID    equ    $1A
  329. WM_SIZED    equ    $1B
  330. WM_MOVED    equ    $1C
  331. WM_NEWTOP    equ    $1D    ;in early MTOS only
  332. WM_UNTOPPED    equ    $1E    ;MTOS for info only
  333. WM_ONTOP    equ    $1F    ;MTOS for info only
  334. WM_BOTTOM    equ    $21    ;MTOS: call WIND_SET(WF_BOTTOM...)
  335. WM_ICONIFY    equ    $22    ;MTOS
  336. WM_UNICONIFY    equ    $23    ;MTOS
  337. WM_ALLICONIFY    equ    $24    ;MTOS
  338. WM_TOOLBAR    equ    $25    ;MTOS
  339. ;
  340. AC_OPEN        equ    $28
  341. AC_CLOSE    equ    $29
  342. ;
  343. AP_TERM        equ    $32    ;MTOS
  344. AP_TFAIL    equ    $33    ;MTOS
  345. ;
  346. CT_KEY        equ    $35    ;XCONTROL
  347. ;
  348. AP_RESCHG    equ    $39    ;MTOS
  349. ;
  350. SHUT_COMPLETED    equ    $3C    ;MTOS
  351. RESCH_COMPLETED    equ    $3D    ;MTOS
  352. ;
  353. AP_DRAGDROP    equ    $3F    ;MTOS
  354. ;
  355. SH_WDRAW    equ    $48    ;MTOS desktop redraw of windows for drive msg[3] (-1=all, 0=A:)
  356. ;
  357. SC_CHANGED    equ    $50    ;programs changing clipboard
  358. ;
  359. CH_EXIT        equ    $5A    ;MTOS msg[3]=childs ap_id,  msg[4]=exit_code
  360. ;
  361. WM_M_BDROPPED    equ    $64    ;
  362. SM_M_SPECIAL    equ    $65    ;MagiC screen manager commands
  363. ;
  364. ;----------------------------------------------------------------------------
  365. ;    Function codes for form_dial
  366. ;
  367. FMD_START    equ    0
  368. FMD_GROW    equ    1
  369. FMD_SHRINK    equ    2
  370. FMD_FINISH    equ    3
  371. ;
  372. ;----------------------------------------------------------------------------
  373. ;    Object type codes
  374. ;
  375. G_BOX        equ    $14
  376. G_TEXT        equ    $15
  377. G_BOXTEXT    equ    $16
  378. G_IMAGE        equ    $17
  379. G_PROGDEF    equ    $18
  380. G_IBOX        equ    $19
  381. G_BUTTON    equ    $1A
  382. G_BOXCHAR    equ    $1B
  383. G_STRING    equ    $1C
  384. G_FTEXT        equ    $1D
  385. G_FBOXTEXT    equ    $1E
  386. G_ICON        equ    $1F
  387. G_TITLE        equ    $20
  388. G_CICON        equ    $21
  389. ;
  390. ;------------------------------------
  391. ;    Object flags
  392. ;
  393. NONE        equ    $00
  394. SELECTABLE    equ    $01
  395. DEFAULT        equ    $02
  396. EXIT        equ    $04
  397. EDITABLE    equ    $08
  398. RBUTTON        equ    $10
  399. LASTOB        equ    $20
  400. TOUCHEXIT    equ    $40
  401. HIDETREE    equ    $80
  402. INDIRECT    equ    $100
  403. FL3DMASK    equ    $600
  404. FL3DNONE    equ    $000
  405. FL3DIND        equ    $200
  406. FL3DBAK        equ    $400
  407. FL3DACT        equ    $600
  408. ;
  409. ;------------------------------------
  410. ;    Object states
  411. ;
  412. NORMAL        equ    $00
  413. SELECTED    equ    $01
  414. CROSSED        equ    $02
  415. CHECKED        equ    $04
  416. DISABLED    equ    $08
  417. OUTLINED    equ    $10
  418. SHADOWED    equ    $20
  419. ;
  420. ;----------------------------------------------------------------------------
  421. ;     Function codes for wind_set/wind_get
  422. ;
  423. WF_KIND        equ    $01    ;GET: p1 equ    window gadget flags
  424. WF_NAME        equ    $02    ;p1.p2 equ    *title
  425. WF_INFO        equ    $03    ;p1.p2 equ    *info
  426. WF_WORKXYWH    equ    $04    ;p1..p4 equ    x.y.w.h
  427. WF_CURRXYWH    equ    $05    ;p1..p4 equ    x.y.w.h
  428. WF_PREVXYWH    equ    $06    ;p1..p4 equ    x.y.w.h
  429. WF_FULLXYWH    equ    $07    ;p1..p4 equ    x.y.w.h
  430. WF_HSLIDE    equ    $08    ;p1 equ    horizontal slider pos 1..1000
  431. WF_VSLIDE    equ    $09    ;p1 equ    vertical slider pos 1..1000
  432. WF_TOP        equ    $0A    ;p1 equ    handle of topped window
  433. WF_FIRSTXYWH    equ    $0B    ;p1..p4 equ    x.y.w.h of first rectangle \/ p3=p4=0 means
  434. WF_NEXTXYWH    equ    $0C    ;p1..p4 equ    x.y.w.h of next rectangle  /\ end of list
  435. WF_RESVD    equ    $0D
  436. WF_NEWDESK    equ    $0E    ;p1.p2 equ    *desktop object tree
  437. WF_HSLSIZE    equ    $0F    ;p1 equ    horizontal slider size 1..1000
  438. WF_VSLSIZE    equ    $10    ;p1 equ    vertical slider size 1..1000
  439. WF_SCREEN    equ    $11    ;p1.p2 equ    *buffer  p3.p4 equ    bytes  of aes menu/alert buffer
  440. WF_COLOR    equ    $12
  441. WF_DCOLOR    equ    $13
  442. WF_OWNER    equ    $14    ;MTOS GET: p1=ap_id p2=0(closed) p3=wind_above p4=wind_below
  443. ;    --------
  444. WF_BEVENT    equ    $18    ;MTOS: p1=1(untoppable)/0(normal)
  445. WF_BOTTOM    equ    $19    ;MTOS: p1 equ    handle of bottom window (excl desktop background)
  446. WF_ICONIFY    equ    $1A    ;MTOS GET: p1=0(normal)/non_0(iconified)  p2.p3=w.h of icon
  447. WF_UNICONIFY    equ    $1B    ;MTOS GET: p1..p4 equ    x.y.w.h from before iconification
  448. ;    --------
  449. WF_TOOLBAR    equ    $1E    ;MTOS: p1.p2 equ    *tree
  450. WF_FTOOLBAR    equ    $1F    ;MTOS GET:p1..p4 equ    x.y.w.h first rectangle \/ p3=p4=0
  451. WF_NTOOLBAR    equ    $20    ;MTOS GET:p1..p4 equ    x.y.w.h next rectangle  /\ at end
  452. ;
  453. ;
  454. ;
  455. ;----------------------------------------------------------------------------
  456. ;    Shape codes for graf_mouse
  457. ;
  458. ARROW        equ    $00
  459. TEXT_CRSR    equ    $01
  460. HOURGLASS    equ    $02
  461. BEE        equ    $02
  462. POINT_HAND    equ    $03
  463. FLAT_HAND    equ    $04
  464. THIN_CROSS    equ    $05
  465. THICK_CROSS    equ    $06
  466. OUTLN_CROSS    equ    $07
  467. USER_DEF    equ    $FF
  468. M_OFF        equ    $100
  469. M_ON        equ    $101
  470. ;
  471. ;
  472. ;----------------------------------------------------------------------------
  473. ;    Macro definitions & support variables
  474. ;
  475. .MACRO    GEM_links
  476.     _unidef    aes_redraw
  477.     _unidef    sub_aes,sub_vdi,aes_data,vdi_data
  478. .ENDM    GEM_links
  479. ;
  480. ;------------------------------------
  481. ;
  482. huge_program    set    0
  483. ;
  484.     _unidec    aes_redraw
  485.     _unidec    sub_aes
  486.     _unidec    aes_data
  487.     _unidec    sub_vdi
  488.     _unidec    vdi_data
  489. ;
  490. ;------------------------------------
  491. ;
  492.     .macro    aes_redraw    
  493.     _uniref    aes_redraw
  494.     .ifeq    huge_program
  495.     bsr    code_aes_redraw
  496.     .else
  497.     jsr    code_aes_redraw
  498.     .endif
  499.     .endm
  500. ;
  501.     .macro    code_aes_redraw
  502. ;
  503.     lea    zz_menu0(pc),a1
  504.     lea    zz_menu1(pc),a2
  505.     move    #14*24/4-1,d2
  506. .movetree:
  507.     move.l    (a1)+,(a2)+
  508.     dbra    d2,.movetree
  509.     lea    zz_menu1(pc),a2
  510.     move    #14-1,d2
  511. .obfix_loop:
  512.     gem_aes    rsrc_obfix,d2,(a2)
  513.     dbra    d2,.obfix_loop
  514. ;
  515.     gem_aes    wind_get,#0,#5
  516.     move    intout+2(pc),zz_wx
  517.     move    intout+4(pc),zz_wy
  518.     move    intout+6(pc),zz_ww
  519.     move    intout+8(pc),zz_wh
  520.     gem_aes    form_dial,#0,#0,#0,#0,#0,zz_wx,zz_wy,zz_ww,zz_wh
  521.     tst    acc_flag
  522.     bne.s    .done_menu_bar
  523.     gem_aes    menu_bar,#1,zz_menu1
  524.     gem_aes    menu_bar,#0,zz_menu1
  525. .done_menu_bar:
  526.     gem_aes    form_dial,#3,#0,#0,#0,#0,zz_wx,zz_wy,zz_ww,zz_wh
  527.     rts
  528. ;
  529. ;NB:    There are 14 objects in each menu tree below
  530. ;
  531. ;'zz_menu0' is kept unaltered (no rsrc_obfix) to allow dynamic changes
  532. ;in font size and resolution between redraws
  533. ;
  534. zz_menu0:
  535.     dc.w    -1,1,4
  536.     dc.w    25,0,0        *0*
  537.     dc.l    0
  538.     dc.w    0,0,80,25
  539. ;
  540.     dc.w    4,2,2
  541.     dc.w    20,0,0        *1*
  542.     dc.l    $1100
  543.     dc.w    0,0,80,$201
  544. ;
  545.     dc.w    1,3,3
  546.     dc.w    25,0,0        *2*
  547.     dc.l    0
  548.     dc.w    2,0,8,$301
  549. ;
  550.     dc.w    2,-1,-1
  551.     dc.w    32,0,0        *3*
  552.     dc.l    zz_text1
  553.     dc.w    0,0,8,$301
  554. ;
  555.     dc.w    0,5,5
  556.     dc.w    25,0,0        *4*
  557.     dc.l    0
  558.     dc.w    0,$301,80,23
  559. ;
  560.     dc.w    4,6,13
  561.     dc.w    20,0,0        *5*
  562.     dc.l    $FF1100
  563.     dc.w    2,0,17,8
  564. ;
  565.     dc.w    7,-1,-1
  566.     dc.w    28,0,0        *6*
  567.     dc.l    zz_text2
  568.     dc.w    0,0,17,1
  569. ;
  570.     dc.w    8,-1,-1
  571.     dc.w    28,0,8        *7*
  572.     dc.l    zz_text3
  573.     dc.w    0,1,17,1
  574. ;
  575.     dc.w    9,-1,-1
  576.     dc.w    28,0,0        *8*
  577.     dc.l    zz_text4
  578.     dc.w    0,2,17,1
  579. ;
  580.     dc.w    10,-1,-1
  581.     dc.w    28,0,0        *9*
  582.     dc.l    zz_text5
  583.     dc.w    0,3,17,1
  584. ;
  585.     dc.w    11,-1,-1
  586.     dc.w    28,0,0        *10*
  587.     dc.l    zz_text6
  588.     dc.w    0,4,17,1
  589. ;
  590.     dc.w    12,-1,-1
  591.     dc.w    28,0,0        *11*
  592.     dc.l    zz_text7
  593.     dc.w    0,5,17,1
  594. ;
  595.     dc.w    13,-1,-1
  596.     dc.w    28,0,0        *12*
  597.     dc.l    zz_text8
  598.     dc.w    0,6,17,1
  599. ;
  600.     dc.w    5,-1,-1
  601.     dc.w    28,32,0        *13*
  602.     dc.l    zz_text9
  603.     dc.w    0,7,17,1
  604. zz_menu0_end:
  605. ;
  606. zz_menu1:
  607.     ds.b    zz_menu0_end-zz_menu0
  608. ;
  609. ;    Text data
  610. ;
  611. zz_text1:    dc.b    ' Redraw',0
  612. zz_text2:    dc.b    '  Information... ',0
  613. zz_text3:    dc.b    '-----------------',0
  614. zz_text4:    dc.b    '  Accessory   1  ',0
  615. zz_text5:    dc.b    '  Accessory   2  ',0
  616. zz_text6:    dc.b    '  Accessory   3  ',0
  617. zz_text7:    dc.b    '  Accessory   4  ',0
  618. zz_text8:    dc.b    '  Accessory   5  ',0
  619. zz_text9:    dc.b    '  Accessory   6  ',0
  620.         dc.b    0,0
  621. ;
  622. ;    window data
  623. ;
  624. zz_wx:    ds.w    1
  625. zz_wy:    ds.w    1
  626. zz_ww:    ds.w    1
  627. zz_wh:    ds.w    1
  628. ;
  629.     .endm    ;aes_redraw
  630. ;
  631. ;------------------------------------
  632. ;
  633.     .macro    vq_aes
  634.     move    #$c9,d0
  635.     trap    #2
  636.     sub    #$c9,d0
  637.     ext.l    d0
  638.     .endm
  639. ;
  640. ;------------------------------------
  641. ;
  642.     .macro    _appl_yield
  643.     move.l    #$c9,d0
  644.     trap    #2
  645.     .endm
  646. ;
  647. ;------------------------------------
  648. ;
  649.     .macro    vq_driver
  650.     pea    (-1).w
  651.     trap    #2
  652.     .endm
  653. ;
  654. ;------------------------------------
  655. ;
  656.     .macro    vq_gdos
  657.     moveq    #-2,d0
  658.     trap    #2
  659.     addq    #2,d0
  660.     ext.l    d0
  661.     .endm
  662. ;
  663. ;------------------------------------
  664. ;
  665.     .macro    vq_vgdos
  666.     moveq    #-2,d0
  667.     trap    #2
  668.     .endm
  669. ;
  670. ;------------------------------------
  671. ;
  672.     .macro    o_tree    tree
  673. o_base_&tree:
  674. o_df_&tree    set    -1
  675.     .endm    ;o_tree
  676. ;
  677.     .macro    o_head    tree,name,next,child_1,child_x
  678. &tree&name    equ    (*-o_base_&tree)/24
  679.     .ifne    (*-o_base_&tree-24*&tree&name)
  680.     .error    Object '&name' misaligned in tree '&tree'
  681.     .endif
  682.     .ifb    next
  683.     dc.w    -1
  684.     .else
  685.     dc.w    &tree&next
  686.     .endif
  687.     .ifb    child_1
  688.     dc.w    -1
  689.     .else
  690.     dc.w    &tree&child_1
  691.     .endif
  692.     .ifb    child_x
  693.     dc.w    -1
  694.     .else
  695.     dc.w    &tree&child_x
  696.     .endif
  697.     .endm        ;ends    .if o_head
  698. ;
  699.     .macro    o_name    tree,name
  700. &tree&name    equ    (*-o_base_&tree)/24
  701.     .endm        ;ends    .if o_name
  702. ;
  703. ;------------------------------------
  704. ;
  705.     .macro    __inaes    op,v2,v3,v4,v5,v6,v7,v8,v9,va
  706. __ind    set    (op) & _ind    ;bit 30 flags indirection of addrin's
  707. __aesii    set    ((op)>>20) & 255    ;sintin   equ    bits 27..20
  708. __aesio    set    ((op)>>16) & 15    ;sintout  equ    bits 19..16
  709. __aesai    set    ((op)>>12) & 15    ;saddrin  equ    bits 15..12
  710. __aesao    set    ((op)>>08) & 15    ;saddrout equ    bits 11..8
  711. __aesop    set    (op)&255    ;opcode   equ    bits  7..0
  712. __stoff    set    0
  713.     .ifne    0<__aesii
  714.     lea    intin,a0
  715.     __stint    v2
  716.     .ifeq    $19==__aesop
  717.     .ifne    1<__aesii
  718.     __stint    v3
  719.     .ifeq    $69==__aesop
  720.     .ifne    2<__aesii
  721.     __stint    v4
  722.     .ifne    3<__aesii
  723.     __stint    v5
  724.     .ifne    4<__aesii
  725.     __stint    v6
  726.     .ifne    5<__aesii
  727.     __stint    v7
  728.     .ifne    6<__aesii
  729.     __stint    v8
  730.     .ifne    7<__aesii
  731.     __stint    v9
  732.     .ifne    8<__aesii
  733.     __stint    va
  734.     .else
  735.     gemaddrin    va
  736.     .endif    ;9ii
  737.     .else
  738.     gemaddrin    v9
  739.     .endif    ;8ii
  740.     .else
  741.     gemaddrin    v8
  742.     .endif    ;7ii
  743.     .else
  744.     gemaddrin    v7
  745.     .endif    ;6ii
  746.     .else
  747.     gemaddrin    v6
  748.     .endif    ;5ii
  749.     .else
  750.     gemaddrin    v5,v6
  751.     .endif    ;4ii
  752.     .else
  753.     gemaddrin    v4,v5
  754.     .endif    ;3ii
  755.     .else
  756. ;special for wind_set(wind_id,func,..)        intin[2]... untouched
  757.     .endif    ;<>wind_set
  758.     .else
  759.     gemaddrin    v3,v4
  760.     .endif    ;2ii
  761.     .else
  762. ;special for evnt_multi(flags,..,*msgbuf)    intin[1]... untouched
  763.     gemaddrin    v3
  764.     .endif    ;<>evnt_multi
  765.     .else
  766.     gemaddrin    v2,v3,v4
  767.     .endif    ;1ii
  768.     .endm    ;__inaes
  769. ;
  770. ;------------------------------------
  771. ;
  772.     .macro    __stint    data
  773.     .ifb    data
  774. __stoff    set    __stoff+2
  775.     .exitm
  776.     .endif
  777.     .ifne    __stoff
  778.     add    #__stoff,a0
  779. __stoff    set    0
  780.     .endif
  781.     move    data,(a0)+
  782.     .endm    ;__stint
  783. ;
  784. ;------------------------------------
  785. ;
  786.     .macro    __stlon    data
  787.     .ifb    data
  788. __stoff    set    __stoff+4
  789.     .exitm
  790.     .endif
  791.     .ifne    __stoff
  792.     add    #__stoff,a0
  793. __stoff    set    0
  794.     .endif
  795.     move.l    data,(a0)+
  796.     .endm    ;__stlon
  797. ;
  798. ;------------------------------------
  799. ;
  800.     .macro    __stptr    data,dest
  801.     .ifb    data
  802.     .exitm
  803.     .endif
  804.     pea    data
  805.     move.l    (sp)+,dest
  806.     .endm    ;__stptr
  807. ;
  808. ;------------------------------------
  809. ;
  810.     .macro    gemaddrin    v1,v2,v3
  811.     .ifne    0<__aesai
  812.     .ifne    __ind<>0
  813.     lea    addrin,a0
  814.     __stlon    v1
  815.     .ifne    1<__aesai
  816.     __stlon    v2
  817.     .ifne    2<__aesai
  818.     __stlon    v3
  819.     .endif    ;2<ai
  820.     .endif    ;1<ai
  821.     .else    ;__ind
  822.     __stptr    v1,addrin
  823.     .ifne    1<__aesai
  824.     __stptr    v2,addrin+4
  825.     .ifne    2<__aesai
  826.     __stptr    v3,addrin+8
  827.     .endif    ;2<ai
  828.     .endif    ;1<ai
  829.     .endif    ;__ind
  830.     .endif    ;0<ai
  831.     .endm    ;gemaddrin
  832. ;
  833. ;
  834.     .macro    gem_aes    op,v2,v3,v4,v5,v6,v7,v8,v9,va
  835.     __inaes    op,v2,v3,v4,v5,v6,v7,v8,v9,va
  836.     sub_aes    #op
  837.     .endm    ;gem_aes
  838. ;
  839. ;------------------------------------
  840. ;
  841.     .macro    sub_aes    op
  842.     _uniref    sub_aes
  843.     move.l    op,d0
  844.     .ifeq    huge_program
  845.     bsr    code_sub_aes
  846.     .else
  847.     jsr    code_sub_aes
  848.     .endif
  849.     .endm    ;sub_aes
  850. ;
  851.     .macro    code_sub_aes
  852.     _uniref    aes_data
  853.     lea    contrl,a0
  854.     clr.b    (a0)+        ;opcode is < $100
  855.     move.b    d0,(a0)+    ;opcode equ    bits 7..0
  856.     clr.b    d0
  857.     lsl.l    #7,d0        ;bits 31..25 are unused
  858.     rol.l    #5,d0
  859.     move    d0,(a0)+    ;sintin   equ    bits 24..20
  860.     clr    d0
  861.     rol.l    #4,d0
  862.     move    d0,(a0)+    ;sintout  equ    bits 19..16
  863.     clr    d0
  864.     rol.l    #4,d0
  865.     move    d0,(a0)+    ;saddrin  equ    bits 15..12
  866.     clr    d0
  867.     rol.l    #4,d0
  868.     move    d0,(a0)+    ;saddrout equ    bits 11..8
  869.     move.l    aesptr,d1
  870.     move    #$c8,d0
  871.     trap    #2
  872.     move.l    intout,d0
  873.     swap    d0        ;d0 equ    intout[1]<<16+intout[0]
  874.     move.l    addrout,d1    ;d1 equ    addrout[0]
  875.     rts
  876.     .endm    ;code_sub_aes
  877. ;
  878. ;------------------------------------
  879. ;
  880.     .macro    sub_vdi    function,handle
  881.     _uniref    sub_vdi
  882.     move    handle,d1
  883.     move.l    function,d0
  884.     .ifeq    huge_program
  885.     bsr    code_sub_vdi
  886.     .else
  887.     jsr    code_sub_vdi
  888.     .endif
  889.     .endm    ;sub_vdi
  890. ;
  891.     .macro    code_sub_vdi
  892.     _uniref    vdi_data
  893.     lea    contrl,a0
  894.     clr.b    (a0)
  895.     move.b    d0,1(a0)    ;opcode equ    bits 7..0
  896.     clr.b    d0
  897.     rol.l    #8,d0
  898.     cmp.b    #$ff,d0
  899.     beq.s    .noptsin
  900.     move    d0,2(a0)    ;s_ptsin  equ    bits 31..24
  901. .noptsin:
  902.     clr    d0
  903.     rol.l    #8,d0
  904.     cmp.b    #$ff,d0
  905.     beq.s    .nointin
  906.     move    d0,6(a0)    ;s_intin  equ    bits 23..16
  907. .nointin:
  908.     clr    d0
  909.     rol.l    #8,d0
  910.     bclr    #7,d0        ;handle flagged by bit 15
  911.     bne.s    .nohandle
  912.     move    d1,12(a0)
  913. .nohandle:
  914.     cmp.b    #$7f,d0
  915.     beq.s    .nosubop
  916.     move    d0,10(a0)    ;subop equ    bits 14..8
  917. .nosubop:
  918.     move.l    vdiptr,d1
  919.     move    #$73,d0
  920.     trap    #2
  921.     move.l    intout,d0
  922.     swap    d0        ;d0 equ    intout[1]<<16+intout[0]
  923.     move.l    ptsout,d1    ;d1 equ    ptsout[0]
  924.     rts
  925.     .endm    ;code_sub_vdi
  926. ;
  927. ;------------------------------------
  928. ;
  929.     .macro    code_aes_data
  930. aesptr:        dc.l    aes_pb
  931. aes_pb:
  932. aespb:        dc.l    contrl,global,intin,intout,addrin,addrout
  933. global:
  934. apversion:    dc.w    0
  935. apcount:    dc.w    0
  936. ap_id:        dc.w    0
  937. apprivate:    dc.l    0
  938. apptree:    dc.l    0
  939. ap1resv:    dc.l    0
  940. ap2resv:    dc.l    0
  941. ap3resv:    dc.l    0
  942. ap4resv:    dc.l    0
  943. addrin:        dc.l    0,0,0
  944. addrout:    dc.l    0
  945.         .endm    ;code_aes_data
  946. ;
  947. ;------------------------------------
  948. ;
  949.     .macro    code_vdi_data
  950. vdiptr:        dc.l    vdi_pb
  951. vdi_pb:
  952. vdipb:        dc.l    contrl,intin,ptsin,intout,ptsout
  953.         .endm    ;code_vdi_data
  954. ;
  955. ;----------------------------------------------------------------------------
  956. ;End of file:    URAn_GEM.SH
  957. ;----------------------------------------------------------------------------
  958.